Generating a health condition message on a health condition detected at a server to send to a host system accessing the server

ABSTRACT

Provided are a computer program product, system, and method for generating a health condition message on a health condition detected at a first server to send to a host system accessing the first server. A determination is made of a health condition with respect to access to a first storage. A determination is made of an estimated Input/Output (I/O) delay to access the first storage resulting from the determined health condition. A health condition message is generated indicating the estimated I/O delay. The health condition message is transmitted to the host system, wherein the host system uses the estimated I/O delay to determine whether to perform a swap operation to redirect host I/O requests to data from the first server to a second server.

BACKGROUND OF THE INVENTION 1. Field of the Invention

The present invention relates to a computer program product, system, andmethod for generating a health condition message on a health conditiondetected at a server to send to a host system accessing the server.

2. Description of the Related Art

In a storage environment, primary and secondary storage servers maymaintain mirror copy relationships, where a primary volume in a mirrorcopy relationship comprises the storage or volumes from which data isphysically copied to a secondary volume. Swapping programs, such asInternational Business Machine Corporation's (“IBM”) HyperSwap® which isa function in the z/OS® operating system, provides continuousavailability for disk failures by maintaining the mirror copyrelationships to provide synchronous copies of all primary disk volumeson one or more primary storage systems to one or more target (orsecondary) storage systems. (HyperSwap and z/OS are registeredtrademarks of IBM in countries throughout the world). When a diskfailure is detected, code in the operating system identifies HyperSwapmanaged volumes and instead of failing the I/O request, HyperSwapswitches (or swaps) information in internal control blocks so that theI/O request is driven against the secondary volume of the mirror copyrelationship. Since the secondary volume is an identical copy of theprimary volume prior to the failure, the I/O request will succeed withno impact to the program issuing the I/O request, which could be anapplication program or part of the operating system. This thereforemasks the disk failure from the program and avoids an application and/orsystem outage. (IBM, HyperSwap, and z/OS are registered trademarks ofIBM in many countries).

Storage controllers may raise signals to alert the host system of errorconditions, referred to as storage controller health messages. Thesehealth messages can be raised during controller recovery actions,internal control block rebuild actions or severe error conditions. Thesetypes of conditions may indicate that the controller either cannotservice Input/Output (I/O) requests or will be delayed in servicing I/Orequests. For temporary conditions, additional storage controller healthmessages may be raised to signal the condition being resolved.

When HyperSwap is enabled and certain types of storage controller healthmessages are received indicating health conditions on the primaryserver, HyperSwap may react to the health message as a swap trigger andinitiate a HyperSwap to redirect I/O requests to the secondary systemand break a synchronous copy relationship between the primary andsecondary servers so data is no longer mirrored from the primary serverhaving the health condition to the secondary server, now operating asthe primary server as a result of the HyperSwap.

There is a need in the art for improved techniques for generating andprocessing health condition messages from servers in a mirror copyrelationship with swapping capabilities.

SUMMARY

Provided are a computer program product, system, and method forgenerating a health condition message on a health condition detected ata first server to send to a host system accessing the first server. Adetermination is made of a health condition with respect to access to afirst storage. A determination is made of an estimated Input/Output(I/O) delay to access the first storage resulting from the determinedhealth condition. A health condition message is generated indicating theestimated I/O delay. The health condition message is transmitted to thehost system, wherein the host system uses the estimated I/O delay todetermine whether to perform a swap operation to redirect host I/Orequests to data from the first server to a second server.

Providing an estimated I/O delay with a health condition message to ahost system allows the host system to determine whether the delayexceeds quality of service and other thresholds tolerated by the hostsystem. The host system may then use the estimated I/O delay todetermine whether the wait is beyond a tolerable threshold to warrantdirecting I/O requests to the second server and second storage providinga mirror copy of the data at the first storage.

In a further embodiment, a flag in the health condition messageindicates that the health condition message includes the estimated I/Odelay in response to determining the estimated I/O delay.

The flag is used to indicate to the host system that an estimated I/Odelay is included in the health condition message to consider whendetermining whether to redirect I/O requests to the second storage. Theflag optimizes host system processing by providing the host systeminformation on whether to determine whether to swap based on anestimated I/O delay or other factors.

In further embodiments, a determination is made of a type of an errorcausing the determined health condition and the type of error isindicated in the health condition message.

Including a type of an error causing the determined health conditionprovides further information for the host system to use to determinewhether the type of error would result in an unacceptable delay suchthat a swap operation should be performed to redirect I/O requests tothe second storage. The type of error may be considered with theestimated I/O delay when included in the health condition message orconsidered alone when the health condition message does not provide anestimated I/O delay.

In a further embodiment, a determination is made of at least one volumeto which access is affected as a result of the health condition. Thedetermined at least one volume is indicated in the health conditionmessage. The host system uses the estimated I/O delay to determinewhether to perform the swap operation with respect to the at least onevolume indicated in the health condition message.

By including information on which volumes are affected by the healthcondition, the host system may perform the swap operations with respectto those volumes experiencing the error triggering the health conditionmessage and may continue to direct I/O requests to volumes notexperiencing the error to the first storage. Limiting the swap operationto only those volumes experiencing the errors avoids any delays andextra-processing operations required to implement the swap operation forthose volumes in the first storage not experiencing the error which donot need to be included in the swap operation for the host system toavoid undue delays.

In further embodiments, a data structure indicates, for each of aplurality of health conditions, an estimated I/O delay, wherein thedetermining the estimated I/O delay comprises determining from the datastructure the estimated I/O delay indicated for the determined healthcondition.

By providing different estimated I/O delays specific to different healthconditions, the server may provide the host system more accurateinformation on the expected I/O delay, which will allow the host systemto make a more accurate decision as to whether the expected I/O delayexceeds the host specific threshold and tolerance for delays.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an embodiment of a storage environment.

FIG. 2 illustrates an embodiment of an Input/Output delay (“I/O”) entryproviding information on an estimated I/O delay parameters for healthconditions.

FIG. 3 illustrates an embodiment of response time thresholds forvolumes.

FIG. 4 illustrates an embodiment of a health condition message.

FIG. 5 illustrates an embodiment of operations for a server to generatea health condition message.

FIG. 6 illustrates an embodiment of operations for a server to process aplurality of health conditions.

FIG. 7 illustrates an embodiment of operations for a host to process ahealth condition message.

FIG. 8 illustrates an embodiment of a computer architecture used withdescribed embodiments.

DETAILED DESCRIPTION

Described embodiments provide techniques for a host server to determinean estimated I/O delay associated with a health condition to include ina health condition message. The host system receiving the healthcondition message may use the estimated I/O delay to determine if aresponse time threshold is satisfied, such as for a volume indicated inthe health condition message, to perform a swap operation to direct I/Orequests to a secondary server mirroring the primary server that sentthe health condition message if the estimated I/O delay exceeds theresponse time threshold. This allows the host system to set responsetime thresholds for different data and volumes based on the latencyrequirements to access the data, so that data requiring immediateaccess, low latency, has a lower estimated I/O delay because longerdelays for such data will not be tolerated, thus causing the swapoperation earlier. However, data in volumes that is not of highimportance or tolerating a high latency, may have a higher estimated I/Odelay because applications requesting the data can tolerate a longerestimated I/O delay so that a swap operation is not needed as soon asfor data in volumes having a low latency requirement.

FIG. 1 illustrates a storage environment having a first server 100 a anda second server 100 b that manage a first storage 102 a and a secondstorage 102 b, respectively. A host 104 may access volumes 106 a and 106b in the first storage 102 a and the second storage 102 b, respectively,over a network 108. The primary server 100 a and the secondary server100 b may also communicate over the network 108 or a separate network orinterface. The volumes 106 a, 106 b may comprise a Logical Unit Number(LUN), Logical Subsystem (LSS), or any grouping of tracks, where a trackmay comprise a block, track or any data unit.

Each server 100 a, 100 b includes a processor 110 a, 110 b, comprisingone or more processor devices, and a memory 112 a, 112 b. Each memory112 a, 112 b includes a storage manager 114 a, 114 b to manage read andwrite access to the respective storage 102 a, 102 b from the host 104; areplication manager 116 a, 116 b to replicate data between the servers100 a, 100 b; a health monitor 118 a, 118 b to monitor the health ofcomponents in the servers 100 a, 100 b and generate a health conditionmessage 400 a, 400 b indicating a health condition detected by thehealth monitor 118 a, 118 b; I/O delay information 200 a, 200 bindicating estimated I/O delays for different detected healthconditions; and a cache 120 a, 120 b to cache read and write data withrespect to the volumes 106 a, 106 b in the respective primary 102 a andsecondary 102 b storages.

The host 104 includes an operating system 130 having a swap manager 132to manage a swap from one of the servers 100 a, 100 b acting as aprimary server, to the other server 100 b, 100 a, respectively, actingas the secondary server; a replication manager 134 to manage replicationor mirror copy operations between the servers 100 a, 100 b; responsetime threshold information 300 providing a threshold to use to determinewhether to swap, where there may be one response time threshold to usefor all health condition messages or a table of a response timethreshold for each of the volumes 106 a the host 104 is accessing; andseverity information 136 indicating for different severity levelswhether a swap is to be performed to redirect I/O access from a server100 a, 100 b designated as a primary server to the other server 100 b,100 a designated as a secondary server.

The host 104 may direct Input/Output (I/O) requests to a first server100 a, functioning as a primary server, to access tracks from the firststorage 102 a. In such case, the first replication manager 116 a wouldinitially copy all volumes 106 a being replicated to volumes 106 b inthe second storage 102 b, functioning as a secondary storage, and thenupon receiving an update to a volume 106 a, transfer that updated trackto the second server 100 b to store in the second storage 102 b. In theevent the host 104 detects that the one or more of the volumes 106 a areunavailable, due to a planned or unplanned event, the host swap manager132 initiates a swap from one or more of the volumes 106 a, includingthose that are now unavailable, to the corresponding volumes 106 bmanaged by the secondary server 100 b, so that all host 104 I/O accessis redirected to the secondary server 100 b and secondary volumes 106 bthat are swapped. Either server 100 a, 100 b may operate as the primaryserver to which host 104 I/O access is directed and the secondary serverto which data is mirrored. Either server 100 a, 100 b may function asthe primary server and the secondary server.

In one embodiment, when detecting unavailability of a subset of thevolumes 106 a, i.e., less than all of the volumes 106 a, only theunavailable volumes 106 a may be subject to a swap, where those primaryvolumes 106 a still available may not be swapped. In this way, I/Orequests can continue to the available volumes 106 a and be redirectedfor the unavailable volumes to the secondary volumes 106 b. In analternative embodiment, all of the volumes 106 a may be swapped to thesecondary volumes 106 b even if just a subset of the volumes 106 a areunavailable.

In certain embodiments, the host operating system 130 may comprise anoperating system such as z Systems Operating System (z/OS®) fromInternational Business Machines Corporation (“IBM”) or other operatingsystems known in the art. (z/OS is a registered trademark of IBMthroughout the world). The host swap manager 132 may comprise IBM'sHyperSwap® program or other similar swapping programs by other vendors.The servers 100 a and 100 b may comprise an enterprise storage serversuitable for managing access to attached or integrated storage devices,such as the IBM DS8000® storage system. (z/OS, HYPERSWAP, and DS8000 areregistered trademarks of IBM in countries throughout the world).

A swap operation from one server to another comprises any operationwhich redirects host 104 access from one server and storage pair to theother server and storage pair to provide hosts 104 continual access todata, whether it be accessed from the primary storage 102 a or thesecondary storage 102 b. In this way, the swap operation allows forcontinued, minimally interrupted access to storage.

The network 108 may comprise a Storage Area Network (SAN), Wide AreaNetwork (WAN), Local Area Network (LAN), the Internet, and Intranet, awireless network, wired network, etc. Additionally, the servers 100 a,100 b may communicate over another interface, such as a bus or othernetwork, including a Peripheral Component Interconnect Express (PCIe)bus.

The storages 102 a, 102 b may comprise different types or classes ofstorage devices, such as magnetic hard disk drives, solid state storagedevice (SSD) comprised of solid state electronics, EEPROM (ElectricallyErasable Programmable Read-Only Memory), flash memory, flash disk,Random Access Memory (RAM) drive, storage-class memory (SCM), etc.,Phase Change Memory (PCM), resistive random access memory (RRAM), spintransfer torque memory (STM-RAM), conductive bridging RAM (CBRAM),magnetic hard disk drive, optical disk, tape, etc. The volumes 106 a,106 b may further be configured from an array of devices, such as Just aBunch of Disks (JBOD), Direct Access Storage Device (DASD), RedundantArray of Independent Disks (RAID) array, virtualization device, etc.Further, the storages 102 a, 102 b may comprise heterogeneous storagedevices from different vendors and different types of storage devices,such as a first type of storage devices, e.g., hard disk drives, thathave a slower data transfer rate than a second type of storage devices,e.g., SSDs.

The components, such as the swap manager 132, replication manager 134,storage manager 114 a, 114 b, replication manager 116 a, 116 b, andhealth monitor 118 a, 118 b may be implemented in computer readableprogram instructions in a computer readable storage medium executed by aprocessor and/or computer hardware, such as an Application SpecificIntegrated Circuit (ASIC).

FIG. 2 illustrates an embodiment of an I/O delay entry 200, maintainedin the I/O delay information 200 a, 200 b in the servers 100 a, 100 b,respectively, to process detected health conditions, and includes ahealth condition/error code 202 detected by the health monitor 118 a,118 b; a maximum estimated I/O delay 204 a host I/O access is expectedto experience for the specific health condition 202; an estimatedmedian/average I/O delay 206 a host is expected to experience; and aseverity level 208 of the health condition, such as acute, minor,severe, etc. Alternatively, additional estimated I/O delay informationmay be included or only one delay parameter may be provided, such as amedian/average or other estimated I/O delay.

The health condition 202 may comprise a hardware error in the primaryserver 100 a, 100 b or storage 102 a, 102 b that is resolved by fixingor replacing the hardware, a hardware or data error in the primarystorage 1002, 102 b, an error in a device or host adaptor in the primaryserver 100 a, 100 b, and other software and/or hardware errors, etc.

The severity level 208 may be used to determine whether to initiate aswap operation. For instance, an acute message which may trigger a swap,may be sent for reasons such as the server 100 a, 100 b is going througha recovery procedure, during which data is unavailable to be read and/orwritten, or it may indicate a data loss condition. In the case of arecovery procedure, an acute condition may be indicated when the healthcondition is a non-retryable or retryable software (firmware) errorrequiring a recovery procedure, such as restarting the failed componentfor a retry-able error, that will interrupt host I/O access to theprimary server and take more time to complete than the time required forthe swap operation, such that data would be inaccessible for less timeif the swap was performed.

The health monitor 118 a, 118 b may dynamically update the estimated I/Odelay parameters 204, 206 in I/O delay entries 200, based on empiricalI/O delays observed at the server 100 a, 100 b during a beginning andend of health conditions. The health monitor 118 a, 118 b mayperiodically adjust the estimated I/O delay parameters 204, 206 ordynamically adjust after each noted health condition occurrenceresulting in an I/O delay.

FIG. 3 illustrates an embodiment of a response time threshold entry 300,maintained in the response time threshold information 300, and includesa volume identifier (ID) 302 and a corresponding response time threshold304 when the volume 302 is subject to the estimated I/O delay resultingfrom the health condition. The response time threshold 304 may be basedon the degree to which the data stored in the volume 302 requires lowlatency or a higher quality of service, such as for critical databasedata, production data, or data needed for critical application data. Forinstance, a volume 302 having data having low latency or high quality ofservice requirement may have a lower response time threshold 304indicating the unacceptability of the host 104 being subject to delaysin accessing data in the volume 302. However, for data that does notrequire low latency, such as archived data, the response time threshold304 may be higher. The response time threshold determines the durationor delay threshold for initiating a swap operation, such that a swapoperation needs to be performed earlier for low latency data (a lowerresponse time threshold), than high latency data (higher response timethreshold).

FIG. 4 illustrates an embodiment of a health condition message 400generated by the health monitor 118 a, 118 b upon detecting a healthcondition or error affecting access to the volumes 106 a, 106 b, andincludes: a message identifier (ID) 402; a health condition or errorcode 404 indicating the type of error or health condition; a server ID406 indicating the server 100 a, 100 b experiencing the healthcondition; one or more volumes 408 impacted by the health condition suchthat host access to the volume(s) 408 experiences delays due to thehealth condition 404; a severity level 410 of the health condition,e.g., minor, acute, severe, etc.; an I/O delay flag 412 indicatingwhether an estimated I/O delay 414 is provided, such as a singleestimated I/O delay or multiple parameters, such as an estimated maximumI/O delay and an estimated mean/average I/O delay.

The host 104 may use the severity level 410 to determine whether toinitiate a swap operation, where the severity information 136 indicateswhether a swap operation is to be performed for a specific severitylevel. For instance, an acute message, which may trigger a swap, may besent for reasons such as the server 100 a, 100 b is going through arecovery procedure, during which data is unavailable to be read and/orwritten, or it may indicate a data loss condition. In the case of arecovery procedure, an acute condition may be indicated when the healthcondition is a non-retryable or retryable software (firmware) errorrequiring a recovery procedure, such as restarting the failed componentfor a retryable error, that will interrupt host I/O access to theprimary server and take more time to complete than the time required forthe swap operation, such that data would be inaccessible for less timeif the swap was performed.

FIG. 5 illustrates an embodiment of operations to generate a healthcondition message 400 by the health monitor 118 a, 118 b in the server100 a, 100 b operating as the primary server for one or more volumesaffected by the detected health condition. Upon a server 100 a, 100 bdetecting (at block 500) a health condition, such as an error, affectingaccess to the server 100 a, 100 b itself or a volume 106 a, 106 b forwhich the server 100 a, 100 b is acting as a primary server, the healthmonitor program 118 a, 118 b in the detecting server 100 a, 100 bgenerates (at block 502) a health condition message 400 indicating thehealth condition/error code 404. A determination is made (at block 504)of the one or more volumes 106 a, 106 b affected by the health conditionfor which the detecting server 100 a, 100 b is the primary server, aseverity level associated with the health condition (at block 506), andan error code for the health condition (at block 508). The healthmonitor 118 a, 118 b indicates (at block 510) the determined at leastone volume 106 a, 106 b, severity level corresponding to the healthcondition 404, and error code in fields 408, 410, and 404 of the healthcondition message 400. The health monitor 118 a, 118 b maintainsinformation associating a severity level for each of the differentdetectable health conditions.

The health monitor 118 a, 118 b determines (at block 512) whether theI/O delay information 200 a, 200 b for the detecting server 100 a, 100 bincludes an entry 200, for the specific detected health condition/errorcode 202. If so, then the health monitor 118 a, 188 b in the detectingserver 100 a, 100 b sets (at block 514) the I/O delay flag 412 in thehealth condition message 400 to indicate an estimated I/O delay 414 isincluded. The estimated I/O delay 204, 206 in the I/O delay entry 200,for the detected health condition 202 is indicated (at block 516) infield 414 of the health condition message 400, which may indicate oneestimated I/O delay or multiple I/O delay parameters, such as a maximumestimated I/O delay 204 and estimated median/average I/O delay. If (atblock 512) there is no I/O delay entry 200, in the I/O delay information200 a, 200 b for the detected health condition, then the health monitor118 a, 118 b in the detecting server 100 a, 100 b sets (at block 518)the I/O delay flag 412 in the health condition message 400 to indicateno estimated I/O delay is included. After generating the healthcondition message 400 (at block 518 or 516), the health monitor 118 a,118 b transmits (at block 520) the generated health condition message400 to one or more hosts 104 connected to the volume 106 a, 106 baffected by the health condition.

FIG. 6 illustrates an embodiment of operations to generate a healthcondition message 400 by the health monitor 118 a, 118 b in the server100 a, 100 b operating as the primary server for one or more volumesaffected by a plurality of detected health conditions. Upon detecting(at 600) a plurality of health conditions affecting access to one ormore volumes 106 a, 106 b for which the detecting server 100 a, 100 b isthe primary server, the health monitor 118 a, 118 b determines (at block602) from the I/O delay information 200 a, 200 b estimated I/O delays204, 206 for the detected health conditions 202. A determination is made(at block 604) of the health condition having 202 a maximum estimatedI/O delay, such as a maximum of the maximum estimated I/O delays 204and/or maximum median/average I/O delays 206. The operations of FIG. 5are performed (at block 606) with respect to the health condition havingthe maximum estimated I/O delay.

With the operations of FIG. 6, only one health condition is reported ifmultiple are detected, and the one that is reported comprises the healthcondition associated with a longest estimated I/O delay. In furtherembodiments, the determination may be made on a per volume basis, suchthat the maximum estimated I/O delay is determined for each volume, andthe operations of FIG. 5 performed for an estimated I/O delay and volumepair, such that different health condition messages 400 indictingdifferent maximum estimated I/O delays may be sent for differentvolumes, resulting in different swap decisions with respect to differentof the volumes, so that access may be redirected for some volumes andnot others for which the detecting server 100 a, 100 b comprises theprimary server.

FIG. 7 illustrates an embodiment of operations performed by the swapmanager 132 in the host 104 to process a received health conditionmessage 400 to determine whether to perform a swap operation to redirectI/O requests from one or more volumes from the primary server 100 a, 100b sending the message 400 to the secondary server 100 b, 100 a. Uponreceiving (at block 700) from a primary server 100 a, 100 b a healthcondition message 400, if (at block 702) the severity level isassociated with performing a swap operation, then the swap manager 132determines (at block 704) whether the I/O delay flag 412 indicates thatan estimated I/O delay 414 is provided. If (at block 704) the I/O delayflag 412 indicates an estimated I/O delay 416 is provided, the swapmanager 132 determines (at block 706) a response time threshold 304,such as a response time threshold 304 for a volume 408 indicated in thehealth condition message 400. If (at block 708) the estimated I/O delaytime 414 exceeds the determined response time threshold 304, then theswap manager 132 performs (at block 710) a swap operation to redirectI/O requests to data (such as for the volume(s) 408 indicated in thehealth condition message) from the primary server 100 a, 100 b to thesecondary server 100 b, 100 b operating as the primary server for theone or more volumes 408 indicated in the health condition message 400.

If (at block 702) the severity level is not associated with performing aswap operation, such as a severe or acute severity level, as opposed toa low severity where no swap is performed or if (at block 704) the I/Odelay flag 412 indicates there is no estimated I/O delay 414 or if (atblock 708) the estimated I/O delay 414, or multiple estimated delays,does not exceed the determined response time threshold 304, then controlends without performing a swap operation in response to the receivedhealth condition message and indicated volumes.

With the operations of FIG. 7, the host 104 swap manager 132 may performthe swap operation selectively for different volumes 106 a, 106 b, suchthat different health conditions and errors may result in the host 104swapping and directing I/O access to different servers 100 a, 100 b fordifferent of the volumes 106 a, 106 b.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Java, Smalltalk, C++ or the like,and conventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The computational components of FIG. 1, including the servers 100 a, 100b, and hosts 104 may be implemented in one or more computer systems,such as the computer system 802 shown in FIG. 8. Computer system/server802 may be described in the general context of computer systemexecutable instructions, such as program modules, being executed by acomputer system. Generally, program modules may include routines,programs, objects, components, logic, data structures, and so on thatperform particular tasks or implement particular abstract data types.Computer system/server 802 may be practiced in distributed cloudcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed cloud computing environment, program modules may be locatedin both local and remote computer system storage media including memorystorage devices.

As shown in FIG. 8, the computer system/server 802 is shown in the formof a general-purpose computing device. The components of computersystem/server 802 may include, but are not limited to, one or moreprocessors or processing units 804, a system memory 806, and a bus 808that couples various system components including system memory 806 toprocessor 804. Bus 808 represents one or more of any of several types ofbus structures, including a memory bus or memory controller, aperipheral bus, an accelerated graphics port, and a processor or localbus using any of a variety of bus architectures. By way of example, andnot limitation, such architectures include Industry StandardArchitecture (ISA) bus, Micro Channel Architecture (MCA) bus, EnhancedISA (EISA) bus, Video Electronics Standards Association (VESA) localbus, and Peripheral Component Interconnects (PCI) bus.

Computer system/server 802 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 802, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 806 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 810 and/or cachememory 812. Computer system/server 802 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 813 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 808 by one or more datamedia interfaces. As will be further depicted and described below,memory 806 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 814, having a set (at least one) of program modules 816,may be stored in memory 806 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. The components of the computer 802 may be implemented asprogram modules 816 which generally carry out the functions and/ormethodologies of embodiments of the invention as described herein. Thesystems of FIG. 1 may be implemented in one or more computer systems802, where if they are implemented in multiple computer systems 802,then the computer systems may communicate over a network.

Computer system/server 802 may also communicate with one or moreexternal devices 818 such as a keyboard, a pointing device, a display820, etc.; one or more devices that enable a user to interact withcomputer system/server 802; and/or any devices (e.g., network card,modem, etc.) that enable computer system/server 802 to communicate withone or more other computing devices. Such communication can occur viaInput/Output (I/O) interfaces 822. Still yet, computer system/server 802can communicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 824. As depicted, network adapter 824communicates with the other components of computer system/server 802 viabus 808. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 802. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

The terms “an embodiment”, “embodiment”, “embodiments”, “theembodiment”, “the embodiments”, “one or more embodiments”, “someembodiments”, and “one embodiment” mean “one or more (but not all)embodiments of the present invention(s)” unless expressly specifiedotherwise.

The terms “including”, “comprising”, “having” and variations thereofmean “including but not limited to”, unless expressly specifiedotherwise.

The enumerated listing of items does not imply that any or all of theitems are mutually exclusive, unless expressly specified otherwise.

The terms “a”, “an” and “the” mean “one or more”, unless expresslyspecified otherwise.

Devices that are in communication with each other need not be incontinuous communication with each other, unless expressly specifiedotherwise. In addition, devices that are in communication with eachother may communicate directly or indirectly through one or moreintermediaries.

A description of an embodiment with several components in communicationwith each other does not imply that all such components are required. Onthe contrary a variety of optional components are described toillustrate the wide variety of possible embodiments of the presentinvention.

When a single device or article is described herein, it will be readilyapparent that more than one device/article (whether or not theycooperate) may be used in place of a single device/article. Similarly,where more than one device or article is described herein (whether ornot they cooperate), it will be readily apparent that a singledevice/article may be used in place of the more than one device orarticle or a different number of devices/articles may be used instead ofthe shown number of devices or programs. The functionality and/or thefeatures of a device may be alternatively embodied by one or more otherdevices which are not explicitly described as having suchfunctionality/features. Thus, other embodiments of the present inventionneed not include the device itself.

The foregoing description of various embodiments of the invention hasbeen presented for the purposes of illustration and description. It isnot intended to be exhaustive or to limit the invention to the preciseform disclosed. Many modifications and variations are possible in lightof the above teaching. It is intended that the scope of the invention belimited not by this detailed description, but rather by the claimsappended hereto. The above specification, examples and data provide acomplete description of the manufacture and use of the composition ofthe invention. Since many embodiments of the invention can be madewithout departing from the spirit and scope of the invention, theinvention resides in the claims herein after appended.

What is claimed is:
 1. A computer program product for providing healthstatus to a host system accessing a first server managing access to afirst storage, wherein a second server manages access to a secondstorage, the computer program product comprising a computer readablestorage medium having computer readable program code embodied thereinthat is executable to perform operations, the operations comprising:determining a health condition with respect to access to the firststorage; determining an estimated Input/Output (I/O) delay to access thefirst storage resulting from the determined health condition; generatinga health condition message indicating the estimated I/O delay; andtransmitting the health condition message to the host system, whereinthe host system uses the estimated I/O delay to determine whether toperform a swap operation to redirect host I/O requests to data from thefirst server to the second server.
 2. The computer program product ofclaim 1, wherein the operations further comprise: indicating in a flagin the health condition message that the health condition messageincludes the estimated I/O delay in response to determining theestimated I/O delay.
 3. The computer program product of claim 1, whereinthe operations further comprise: determining a type of an error causingthe determined health condition; and indicating in the health conditionmessage the type of the error.
 4. The computer program product of claim3, wherein the operations comprises: determining at least one volume towhich access is affected as a result of the health condition; andindicating in the health condition message the determined at least onevolume, wherein the host system uses the estimated I/O delay todetermine whether to perform the swap operation with respect to the atleast one volume indicated in the health condition message.
 5. Thecomputer program product of claim 1, wherein the operations furthercomprise: maintaining a data structure indicating, for each of aplurality of health conditions, an estimated I/O delay, wherein thedetermining the estimated I/O delay comprises determining from the datastructure the estimated I/O delay indicated for the determined healthcondition.
 6. The computer program product of claim 5, wherein theoperations further comprise: determining whether the data structureindicates an estimated I/O delay for the determined health condition,wherein the determining the estimated I/O delay and the indicating theestimated I/O delay in the health condition message are performed inresponse to determining that the data structure indicates an estimatedI/O delay for the health condition.
 7. The computer program product ofclaim 6, wherein the operations further comprise: setting a flag in thehealth condition message to indicate that an estimated I/O delay is notindicated in the health condition message in response to determiningthat the data structure does not indicate an estimated I/O delay for thedetermined health condition.
 8. The computer program product of claim 7,wherein the estimated I/O delay indicates a maximum expected disruptiontime and a median or average expected I/O delay.
 9. The computer programproduct of claim 1, wherein the operations further comprise: determininga plurality of health conditions with respect to the first storage;determining estimated I/O delays for the determined plurality of healthconditions; and determining a maximum estimated I/O delay of thedetermined estimated I/O delays, wherein the health condition messageincludes the determined maximum estimated I/O delay.
 10. A system forproviding health status to a host system accessing a first servermanaging access to a first storage, wherein a second server managesaccess to a second storage, comprising: a processor; and a computerreadable storage medium having computer readable program code embodiedtherein that is executable to perform operations, the operationsdetermining a health condition with respect to access to the firststorage; determining an estimated Input/Output (I/O) delay to access thefirst storage resulting from the determined health condition; generatinga health condition message indicating the estimated I/O delay; andtransmitting the health condition message to the host system, whereinthe host system uses the estimated I/O delay to determine whether toperform a swap operation to redirect host I/O requests to data from thefirst server to the second server.
 11. The system of claim 10, whereinthe operations further comprise: indicating in a flag in the healthcondition message that the health condition message includes theestimated I/O delay in response to determining the estimated I/O delay.12. The system of claim 10, wherein the operations further comprise:determining a type of an error causing the determined health condition;and indicating in the health condition message the type of the error.13. The system of claim 12, wherein the operations further comprises:determining at least one volume to which access is affected as a resultof the health condition; and indicating in the health condition messagethe determined at least one volume, wherein the host system uses theestimated I/O delay to determine whether to perform the swap operationwith respect to the at least one volume indicated in the healthcondition message.
 14. The system of claim 10, wherein the operationsfurther comprise: maintaining a data structure indicating, for each of aplurality of health conditions, an estimated I/O delay, wherein thedetermining the estimated I/O delay comprises determining from the datastructure the estimated I/O delay indicated for the determined healthcondition.
 15. The system of claim 14, wherein the operations furthercomprise: determining whether the data structure indicates an estimatedI/O delay for the determined health condition, wherein the determiningthe estimated I/O delay and the indicating the estimated I/O delay inthe health condition message are performed in response to determiningthat the data structure indicates an estimated I/O delay for the healthcondition.
 16. A method for providing health status to a host systemaccessing a first server managing access to a first storage, wherein asecond server manages access to a second storage, comprising:determining a health condition with respect to access to the firststorage; determining an estimated Input/Output (I/O) delay to access thefirst storage resulting from the determined health condition; generatinga health condition message indicating the estimated I/O delay; andtransmitting the health condition message to the host system, whereinthe host system uses the estimated I/O delay to determine whether toperform a swap operation to redirect host I/O requests to data from thefirst server to the second server.
 17. The method of claim 16, furthercomprising: indicating in a flag in the health condition message thatthe health condition message includes the estimated I/O delay inresponse to determining the estimated I/O delay.
 18. The method of claim16, further comprising: determining a type of an error causing thedetermined health condition; and indicating in the health conditionmessage the type of the error.
 19. The method of claim 18, furthercomprising: determining at least one volume to which access is affectedas a result of the health condition; and indicating in the healthcondition message the determined at least one volume, wherein the hostsystem uses the estimated I/O delay to determine whether to perform theswap operation with respect to the at least one volume indicated in thehealth condition message.
 20. The method of claim 16, furthercomprising: maintaining a data structure indicating, for each of aplurality of health conditions, an estimated I/O delay, wherein thedetermining the estimated I/O delay comprises determining from the datastructure the estimated I/O delay indicated for the determined healthcondition.
 21. The method of claim 20, further comprising: determiningwhether the data structure indicates an estimated I/O delay for thedetermined health condition, wherein the determining the estimated I/Odelay and the indicating the estimated I/O delay in the health conditionmessage are performed in response to determining that the data structureindicates an estimated I/O delay for the health condition.
 22. A storageenvironment in communication with a host system, comprising: a firstserver managing access to a first storage, wherein the host systemdirects Input/Output (I/O) requests to the first server to access thefirst storage; a second server managing access to a second storage;wherein the first server executes computer readable program code toperform operations, the operations determining a health condition withrespect to access to the first storage; determining an estimatedInput/Output (I/O) delay to access the first storage resulting from thedetermined health condition; generating a health condition messageindicating the estimated I/O delay; and transmitting the healthcondition message to the host system, wherein the host system uses theestimated I/O delay to determine whether to perform a swap operation toredirect host I/O requests to data from the first server to the secondserver.
 23. The storage environment of claim 22, wherein the operationsfurther comprise: indicating in a flag in the health condition messagethat the health condition message includes the estimated I/O delay inresponse to determining the estimated I/O delay.
 24. The storageenvironment of claim 22, wherein the operations further comprise:determining a type of an error causing the determined health condition;and indicating in the health condition message the type of the error.25. The storage environment of claim 22, wherein the operations furthercomprise: maintaining a data structure indicating, for each of aplurality of health conditions, an estimated I/O delay, wherein thedetermining the estimated I/O delay comprises determining from the datastructure the estimated I/O delay indicated for the determined healthcondition.